Computer systems and various other devices or systems typically have some method of interacting with users. Usually, this interaction involves the user inputting data or instructions into the computer system. One of the most common devices utilized for inputting data or instructions into a computer system is a keyboard. Normally the keyboard is a peripheral device, coupled to a computer system by external wiring. The external wiring is usually connected to a communication port in a case or "tower" containing the Central Processing Unit (CPU). However, a keyboard is sometimes an integral component of a computer case. For example, lap top or portable computers usually have a self contained keyboard as an integral part of the system.
As the name suggests, keyboards usually include a number of keys or buttons arranged in a particular pattern or specific order on a board. Typically the keys are arranged in an array of rows and columns. The keys represent characters or a function, such as: letters in the alphabet, numbers, punctuation characters, backspace, delete, page up, etc. Sometimes, the user has to activate a number of keys in a particular sequence or simultaneously to achieve a desired result. For example, some computer systems will initiate a soft boot by activating (pressing) the control key, alt key and delete key simultaneously.
The keys are essentially switches that are activated by applying a force, such as pressing on the key with a finger. When a key is activated, an electrical signal representing a specific piece of information (i.e. a keycode representing a letter or number) is allowed to pass through the switch. Keyboards for electronic devices such as computers have traditionally been based on embedded microcontrollers, requiring large amounts of silicon circuitry combined with external memory.
Prior Art FIG. 1 shows a typical schematic for a traditional keyboard system 100. Traditional keyboard system 100 comprises an embedded microcontroller 101, a read only memory (ROM) 102, a random access memory (RAM) 103, a switch matrix 104, an output port 105, an input port 106 and a communication bus 107. Embedded microcontroller 101 is a microprocessor separate and distinct from a computer system's CPU. Switch matrix 104 is a plurality of switches organized as a n by m matrix of n rows and m columns. Each row and each column comprises an electrically conductive line (hereafter referred to as a line). A switch is coupled to the lines at the intersection of each row and column. Each switch is coupled to a key and each switch is adapted to be activated (closed) when a key is pressed.
The traditional keyboard system 100 operates by generating a scan series of signals, in which each switch is accessed, in turn, to determine if it has been activated. Signals are driven on the output port 105 and connections are received back on the input port 106. Embedded microcontroller 101 directs signals from output port 105 to be sequentially driven low on each row. At the same time, input port 106 scans each column sequentially to determine if the signal on a column is low. When input port 106 senses a low signal is on a particular column it signals embedded microcontroller 101. Embedded microcontroller 101 is programmed to recognize that the switch coupling a row and column must be activated if the signals on the row and column are low. Thus, by determining which switch is activated the traditional keyboard system 100 knows which particular key is pushed.
The architecture of the traditional keyboard system 100 has undesirable characteristics and attributes. For example, keyboard architectures as shown in FIG. 1 can require tens of thousands of silicon gates to be incorporated in the embedded microcontroller 101, ROM 102, and RAM 103. These silicon gates in turn require more power to operate. Embedded microcontroller 101 is a microprocessor that requires software programs to operate, which in turn require resources to be expended in developing the software and troubleshooting the system. Usually the ROM 102 and RAM 103 are external to the chip which contains the embedded microcontroller 101. This greatly increases the number of pins required to communicate addresses and associated data between embedded microcontroller 101 and ROM 102 or RAM 103. Thus, the typical prior art keyboard system requires significant development time for design and an extensive hardware and software verification effort.
What is required is a keyboard system that minimizes the amount of manufacturing resources while maintaining sufficient features in an efficient, flexible and scaleable manner. In such a keyboard system, the number of silicon gates required to operate the keyboard system and power consumed by the components of the keyboard system should be reduced. Further, in such a keyboard system there should be a minimal amount of resources required for software development. The amount of CPU support needed for the keyboard system to function should be decreased. The keyboard system should maintain features such as; debounce of switch noise, "n-key rollover" support, typematic support, any-key resume with first key pressed, full power management, programmable keyboard scan rate, and scaleable design for any size keyboard.